package com.xinjian.jianba.examples;

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;
import com.qiniu.common.Zone;
import com.qiniu.storage.Configuration;

import java.io.IOException;

public class upload_overwrite {
    //设置好账号的ACCESS_KEY和SECRET_KEY
    String ACCESS_KEY = "tb1uBM7zB7VBopMs1-VHPnTwz0JsUYh9I194OMB6";
    String SECRET_KEY = "M-zy_OwUebkEmkbDxa6GPA2XMBVTDdHg3GtrkJx9";
    //要上传的空间
    String bucketname = "jianjian";
    //上传到七牛后保存的文件名
    String key = "gul.png";
    //上传文件的路径
    String filePath = "C:/Users/10649/Desktop/470d396e46ae95cd925bfa0bd5be14e0.jpg";

    //密钥配置
    Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);

    ///////////////////////指定上传的Zone的信息//////////////////
    //第一种方式: 指定具体的要上传的zone
    //注：该具体指定的方式和以下自动识别的方式选择其一即可
    //要上传的空间(bucket)的存储区域为华东时
    // Zone z = Zone.zone0();
    //要上传的空间(bucket)的存储区域为华北时
    // Zone z = Zone.zone1();
    //要上传的空间(bucket)的存储区域为华南时
    // Zone z = Zone.zone2();

    //第二种方式: 自动识别要上传的空间(bucket)的存储区域是华东、华北、华南。
    Zone z = Zone.zone0();
    Configuration c = new Configuration(z);

    //创建上传对象
    UploadManager uploadManager = new UploadManager(c);

    // 覆盖上传
    public String getUpToken() {
        //<bucket>:<key>，表示只允许用户上传指定key的文件。在这种格式下文件默认允许“修改”，已存在同名资源则会被本次覆盖。
        //如果希望只能上传指定key的文件，并且不允许修改，那么可以将下面的 insertOnly 属性值设为 1。
        //第三个参数是token的过期时间
        return auth.uploadToken(bucketname, key);//默认过期时间3600
    }

//    // 覆盖上传
//    public String getUpToken() {
//        //<bucket>:<key>，表示只允许用户上传指定key的文件。在这种格式下文件默认允许“修改”，已存在同名资源则会被本次覆盖。
//        //如果希望只能上传指定key的文件，并且不允许修改，那么可以将下面的 insertOnly 属性值设为 1。
//        //第三个参数是token的过期时间
//        return auth.uploadToken(bucketname, key, 3600, new StringMap().put("insertOnly", 1));
//    }

    public void upload() throws IOException {
        try {
        	String Token=getUpToken();
        	System.out.println("token:"+Token);
            //调用put方法上传，这里指定的key和上传策略中的key要一致
          Response res = uploadManager.put(filePath, null, "tb1uBM7zB7VBopMs1-VHPnTwz0JsUYh9I194OMB6:LQaufbwnl3kWxQEKJmnacQaf4BQ=:eyJjYWxsYmFja0JvZHlUeXBlIjoiYXBwbGljYXRpb24vanNvbiIsInNjb3BlIjoiamlhbmppYW4iLCJjYWxsYmFja1VybCI6Imh0dHA6Ly9nbWtseTYuZTIubHV5b3V4aWEubmV0OjI5MDI0L2FwaS92MS9qaWFuYmEvcWluaXV5dW4vY2FsbEJhY2siLCJkZWFkbGluZSI6MTUzMDc2ODA0MCwiY2FsbGJhY2tCb2R5IjoiZmlsZW5hbWVcdTAwM2QkKGZuYW1lKVx1MDAyNmZpbGVzaXplXHUwMDNkJChmc2l6ZSkifQ==");
            //打印返回的信息  
            System.out.println(res.bodyString());
        } catch (QiniuException e) {
            Response r = e.response;
            // 请求失败时打印的异常的信息
            System.out.println(r.toString());
            try {
                //响应的文本信息
                System.out.println(r.bodyString());
            } catch (QiniuException e1) {
                //ignore
            }
        }
    }
    public static void main(String[] args) throws IOException {
    	upload_overwrite up=new upload_overwrite();
    	up.upload();
    	
	}
 //token:tb1uBM7zB7VBopMs1-VHPnTwz0JsUYh9I194OMB6:-742xsocb2Hn0urdF6NCKvhKLLg=:eyJzY29wZSI6ImppYW5qaWFuOm15LWphdmExLnBuZyIsImRlYWRsaW5lIjoxNTMwNzYwMzIxfQ==
//token:tb1uBM7zB7VBopMs1-VHPnTwz0JsUYh9I194OMB6:_f0Mb1Dxn2gfTNRRtEZIjfo0HuQ=:eyJzY29wZSI6ImppYW5qaWFuOm15LWphdmEyLnBuZyIsImRlYWRsaW5lIjoxNTMwNzYwNDA5fQ==

    //{"hash":"Fg9BBSddwrBfTzIDxdbG8y4UOgLp","key":"my-java.png"}
}
